反向地址转换协议(RARP:Reverse Address Resolution Protocol)

引言

具有本地磁盘的系统引导时,一般是从磁盘上的配置文件中读取IP地址。但是无盘机,如X终端或五盘工作站,则需要采用其他方法来获得IP地址。
网络上的每个系统都具有唯一的硬件地址,它是由网络接口生产厂家配置的。无盘系统的RARP实现过程是从接口卡上读取唯一的硬件地址,然后发送一份RARP请求,请求某个主机响应该无盘系统的IP地址。


RARP的分组格式

与ARP基本一致,RARP请求或应答的帧类型代码为0x8035,而且RARP请求的op代码为3,应答op代码为4.


RARP请求过程

和ARP一样,RARP请求是广播方式,RARP应答是单播方式。
如果没有响应,会等待一段时间重新发送请求,每一次等待时间会倍增。
1.21s –> 2.42s –> 4.83s –> …
当时间到达某个阈值(42.80s)时,就会重置。

超时间隔采用这样的递增方式比每次都采用相同值的方法要好。为什么?请参考超时重发机制。


RARP服务器的设计

RARP服务器的复杂性在于,服务器一般要为多个主机(网络上所有的无盘系统)提供硬件地址到IP地址的映射。该映射包含在一个磁盘文件中。由于内核一般不读取和分析磁盘文件,因此RARP服务器的功能就由用户进程来提供,而不是作为内核的TCP/IP实现的一部分。

一个复杂因素:RARP请求实在硬件层上进行广播的,不经过路由器进行转发。为了让无盘系统在RARP服务器关机的状态下也能引导,通常在一个网络上要提供多个RARP服务器。

(卧槽??网络层和链路层传输是分离的吗?)
(网络层——选路,链路层——提供路)

与ARP的区别:

  • ARP通常是TCP/IP在内核中实现的,RARP则是用户进程中